package com.indexingsystem.system.service;

import java.util.List;
import java.util.Set;

import com.indexingsystem.boss.Vo.AuthRoleVo;
import com.indexingsystem.boss.Vo.RolesDropVo;
import com.indexingsystem.boss.Vo.RolesListVo;
import com.indexingsystem.boss.common.PagedResult;
import com.indexingsystem.boss.entity.Roles;
import com.indexingsystem.system.web.model.Role;

public interface IRolesService {

	/**
	 * 通过角色id删除角色信息.
	 * 
	 * @param roleId
	 * @return
	 */
	int deleteByPrimaryKey(String roleId) throws Exception;

	/**
	 * 批量删除角色操作.
	 * 
	 * @param roleIdList
	 * @return
	 */
	int deleteRolesByIdBatch(List<String> roleIdList) throws Exception;

	/**
	 * 新增角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int insertSelective(Roles record) throws Exception;

	/**
	 * 分页查询角色列表.
	 * 
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<RolesListVo> selectRolesList(String queryCriteria, Integer pageNo, Integer pageSize);

	/**
	 * 通过角色id查询角色信息.
	 * 
	 * @param roleId
	 * @return
	 */
	Roles selectByPrimaryKey(String roleId);

	/**
	 * 修改角色信息.
	 * 
	 * @param record
	 * @return
	 */
	int updateByPrimaryKeySelective(Roles record) throws Exception;

	/**
	 * 通过userId的获取角色列表信息.
	 * 
	 * @param userId
	 * @return
	 */
	List<Roles> getRoleInfoByUserId(String userId);

	/**
	 * 新增用户管理初始化角色下来控件列表.
	 * 
	 * @return
	 */
	List<RolesDropVo> getRolesDropVoList();

	/**
	 * 通过用户名查询角色id集合.
	 * 
	 * @param userName
	 * @return
	 */
	Set<String> getRoleIdByUserName(String userName);

	/**
	 * 查询不包含userId的角色信息列表.
	 * 
	 * @param userId
	 * @return
	 */
	List<Roles> getCheckRoles(String userId);

	/**
	 * 根据用户ID查询角色（role），放入到Authorization里.
	 * 
	 * @param userId
	 * @return
	 */
	List<AuthRoleVo> findRoleByUserId(String userId);

	/**
	 * 获取角色总数量.
	 * 
	 * @return
	 */
	Integer getRoleCount(String queryCriteria);

	/**
	 * 获取角色列表.
	 * 
	 * @return
	 */
	List<Roles> getRolesList();

	/**
	 * 通过角色id查询角色授权url及角色code.
	 * 
	 * @param roleId
	 * @return
	 */
	List<AuthRoleVo> getRolesCodeOrPageUrl(String roleId);
	
	/**
	 * 通过角色组id获取角色组角色列表.
	 * @param roleGroupId
	 * @return
	 */
	List<Roles> getRolesListByRoleGroupId(String roleGroupId);
	
	
	   /**
     * 通过角色名称查询角色信息.
     * 
     * @param roleName
     * @return
     */
    Roles getRolesInfoByRoleName(String roleName);
    
    
    /**
     * 通过角色code查询角色信息.
     * @param roleCode
     * @return
     */
    Roles getRolesInfoByRoleCode(String roleCode);
    
    /**
     * 查询是否已设置自动分配的角色.
     * @param autoAssignment
     * @return
     */
    String getRolesInfoByAutoAssignment(Integer autoAssignment);

	List<Roles> getdhRolesList();
}